package com.krisyu.decoratorPattern.template;

/**
 * @DATE 2022/1/7
 * @Author KrisYu
 * @Description 装饰模式的场景类，
 *  装饰模式适用：  代理者与被代理者是同一类或是同一超类的子类。
 */
public class Client {
    public static void main(String[] args) {
        // 获取元素实例
        Component component = new ConcreteComponent();
        System.out.println("\n\n-----------Before Decorated-----------");
        component.operation();
        // 进行第一次装饰
        component = new ConcreteDecorator1(component);
        // 查看装饰效果
        System.out.println("\n\n-----------First Decorated-----------");
        component.operation();
        // 进行第二次装饰
        component = new ConcreteDecorator2(component);
        // 查看装饰结果
        System.out.println("\n\n-----------Second Decorated-----------");
        component.operation();

    }
}
